MySQL SQL 함수

✒️ 2025-05-28 16:08 내용 수정


SQL 함수

SQL에서 기본적으로 제공하는 함수


문자 함수

함수 설명
ASCII 지정된 문자의 ASCII값 반환
RPAD 왼쪽 정렬 후 오른쪽에 지정한 문자 삽입
LPAD 오른쪽 정렬 후 왼쪽에 지정한 문자 삽입
TRIM 문자열의 시작 이전 지점과 끝 이후 지점의 공백 제거
RTRIM 문자열 오른쪽(끝 이후) 공백 제거
LTRIM 문자열 왼쪽(시작 이전) 공백 제거
LOWER 또는 LCASE 지정된 문자를 모두 소문자로 변환
UPPER 또는 UCASE 지정된 문자를 모두 대문자로 변환
LOCATE 또는 POSITION 특정 문자의 위치(INDEX)를 반환
INSTR 특정 문자의 위치(INDEX)를 반환, LOCATE의 인자 2개 버전
LENGTH 문자열의 길이를 반환
SUBSTRING 또는 SUBSTR 선택 위치(INDEX)부터 원하는 길이의 문자를 반환. 문자열 추출
REPLACE 문자열의 첫 번째 파라미터 문자를 두 번째 파라미터 문자로 변환
CONCAT 두 문자열을 연결한 결과를 반환
STR_TO_DATE 문자를 날짜로 변경

1. ASCII

SELECT ASCII(str);

2. RPAD와 LPAD

-- RPAD
SELECT RPAD(문자열 , 총문자열길이, '삽입할문자');

-- LPAD
SELECT LPAD(문자열 , 총문자열길이, '삽입할문자');

3. TRIM, RTRIM, LTRIM

-- TRIM
SELECT TRIM('문자열');
SELECT TRIM('문자' FROM '원본문자열'); -- 원본 문자열에서 문자를 공백으로 처리한다

-- RTRIM
SELECT RTRIM('문자열';

-- LTRIM
SELECT LTRIM('문자열');

4. LOWER, UPPER

-- LOWER
SELECT LOWER('문자열');

-- UPPER
SELECT UPPER('문자열');

5. LOCATE

SELECT LOCATE('검색할문자', '문자열');
SELECT LOCATE('검색할문자', '문자열', INDEX); -- 지정한 INDEX 부터 검색시작 (기본값 1)

6. INSTR

SELECT INSTR('문자열', '검색할문자');

7. LENGTH

SELECT LENGTH ('문자열');

8. SUBSTR, REPLACE, CONCAT

-- SUBSTR
SELECT SUBSTR('문자열', INDEX, LENGTH);

-- REPLACE
SELECT REPLACE ('문자열', '문자나문자열', '바꿀문자');

-- CONCAT
SELECT CONCAT ('문자열1 ', '문자열2', ...);

9. STR_TO_DATE

SELECT STR_TO_DATE('문자열', '날짜형식');

SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');

숫자 함수

함수 설명
ABS 절댓값(absolute) 반환
ROUND 특정 자릿수를 반올림하여 반환
FLOOR 주어진 숫자보다 작거나 정수 중에서 주어진 숫자와 같은 값의 최대값을 반환
CEIL 주어진 숫자보다 크거나 정수 중에서 주어진 숫자와 같은 값의 최소값을 반환
TRUNCATE 특정 자릿수에서 잘라낸 결과를 반환
SIGN 주어진 값의 음수, 정수, 0 여부를 반환
MOD 나누기 후 나머지를 반환
POWER 또는 POW 주어진 숫자의 거듭 제곱을 반환

1. ABS

SELECT ABS(숫자);

2.ROUND

SELECT ROUND(숫자, 자릿수);

3. FLOOR, CEIL

-- FLOOR
SELECT FLOOR(숫자);
-- CEIL
SELECT CEIL(숫자);

4. TRUNCATE

SELECT TRUNCATE(숫자, 자릿수);

5. SIGN

SELECT SIGN(숫자);

6. MOD

SELECT MOD(분모, 분자);

7. POWER

SELECT POWER(숫자, 거듭제곱);

날짜 및 시간 함수

날짜 형식

형식 0 값 형식 설명
DATE '0000-00-00' YYYY 연도
TIME '00:00:00' MM
DATETIME '0000-00-00 00:00:00' DD
TIMESTAMP '0000-00-00 00:00:00' hh 시간
YEAR 0000 mm
ss

1. 날짜

함수 설명
NOW 현재 날짜를 반환
YEAR 주어진 날짜의 연도를 반환
MONTH 주어진 날짜의 월을 반환
DAYOFMONTH 또는 DAY 주어진 날짜의 일을 반환
DATE_ADD 날짜에 기간(INTERVAL)을 더함
DATE_SUB 날짜에서 기간(INTERVAL)을 뺌
DATEDIFF 날짜 A에서 날짜 B를 뺀 일 수를 반환
TO_DAYS 주어진 날짜를 일 수로 변환
  1. NOW
NOW() -- 현재 날짜
  1. YEAR, MONTH, DAYOFMONTH
-- YEAR()
SELECT YEAR('date');

-- MONTH()
SELECT MONTH('date');

-- DAYOFMONTH() 또는 DAY()
SELECT DATOFMONTH('date');
SELECT DAY('date');
  1. DATE_ADD, DATE_SUB, DATEDIFF
-- DATE_ADD
SELECT DATE_ADD('date1', INTERVAL 기간 단위);

-- DATE_SUB
SELECT DATE_ADD('date1', INTERVAL 기간 단위);

-- DATEDIFF
SELECT DATEDIFF('date1', 'date2');
  1. TO_DAYS
SELECT TO_DAYS('date');

2. 시간

함수 설명
CURTIME 현재 시간을 반환
TIME 표현식에서 시간 부분을 추출
SECOND 초를 반환
TIME_FORMAT 시간 형식으로 표현
TIME_TO_SEC 전달 받은 인자를 초로 변환
SEC_TO_TIME 초를 'hh:mm:ss' 형식으로 변환
TO_SECONDS 표현식에서 초로 변환
  1. CURTIME
SELECT CURTIME();
  1. TIME, SECOND
-- TIME
SELECT TIME('time');

-- SECOND
SELECT SECOND('time');
  1. TIME_FORMAT, TIME_TO_SEC, SEC_TO_TIME, TO_SECONDS
-- TIME_FORMAT
SELECT TIME_FORMAT('time', '시간형식');

-- TIME_TO_SEC
SELECT TIME_TO_SEC('time');

-- TIME_FORMAT
SELECT SEC_TO_TIME(seconds);

-- TIME_TO_SEC
SELECT TO_SECONDS(표현식);

NULL 처리 함수

함수 설명
NULLIF 두 파라미터의 값을 비교해서 같으면 NULL을, 다르면 첫 번째 파라미터 값을 반환

1. NULLIF

SELECT NULLIF(비교값1, 비교값2);

순위 함수와 집계 함수

함수 설명
RANK 그룹 내 순위를 계산해서 NUMBER 타입으로 순위를 반환. 중복 순위도 계산한다.
DENSE_RANK 그룹 내 순위를 계산해서 NUMBER 타입으로 순위를 반환. 중복 순위는 계산하지 않는다.
COUNT 행의 개수(차수)를 반환
MIN 행들의 최소값을 반환
MAX 행들의 최대값을 반환
SUM 행들의 합계를 반환
AVG 행들의 평균을 반환
STDDEV 행들의 표준 편차를 반환
VARIANCE 행들의 분산을 반환

1. RANK, DENSE_RANK

-- RANK
SELECT RANK() OVER(ORDER BY 컬럼명 정렬순서) FROM 테이블명;

-- DENSE_RANK
SELECT DENSE_RANK() OVER(ORDER BY 컬럼명 정렬순서) FROM 테이블명;

2. COUNT

SELECT COUNT(*) FROM 테이블명; -- 전체 행의 수 출력
SELECT COUNT(표현식) FROM 테이블명; -- NULL 값을 카운트하지 않는다
SELECT COUNT(DISTINCT 표현식) FROM 테이블명; -- 중복되는 컬럼 속성을 제외한 행의 수 출력

3. MIN, MAX

-- MIN
SELECT MIN(컬럼명) FROM 테이블명;

-- MAX
SELECT MAX(컬럼명) FROM 테이블명;

4. SUM

SELECT SUM(컬럼명) FROM 테이블명;

5. AVG

SELECT AVG(컬럼명) FROM 테이블명;

6. STDDEV, VARIANCE

-- STDDEV
SELECT STDDEV(컬럼명) FROM 테이블명; -- VARIANCE의 양의 제곱근

-- VARIANCE
SELECT VARIANCE(컬럼명) FROM 테이블명;

타입 변환 함수

1. CAST

CAST(expression AS datatype)
-- 특정 문자열을 정수로 변환
CAST(test_string AS UNSIGNED)

-- 아래처럼 사용할 수도 있다.
-- test_string = '15'와 같은 상황일 때
SELECT * FROM TEST WHERE CAST(test_string AS UNSIGNED) > 10